﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ProjControleModelos;
namespace ProjControleDAL
{
   public class OrcamentosDAL
    {
       SqlCommand cmd = null;
       Dados objD = null;
       public OrcamentosDAL()
       {
       }
        #region Métodos
        //inserir
       public void inserir(Orcamentos objO)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "insert into orcamento values (@dt_orcamento,@validade,@cod_cliente,@cod_funcionario,@valor,@qtd_parc,@val_negociado,@obs)";
               cmd.Parameters.Add(new SqlParameter("@dt_orcamento", SqlDbType.Date)).Value = objO.dt_orcamento;
               cmd.Parameters.Add(new SqlParameter("@validade", SqlDbType.Int)).Value = objO.validade_orcamento;
               cmd.Parameters.Add(new SqlParameter("@cod_cliente", SqlDbType.Int)).Value = objO.cod_cliente;
               cmd.Parameters.Add(new SqlParameter("@cod_funcionario", SqlDbType.Int)).Value = objO.cod_funcionario;
               cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.Float)).Value = objO.val_orcamento;
               cmd.Parameters.Add(new SqlParameter("@qtd_parc", SqlDbType.Int)).Value = objO.qntd_parc_orcamento;
               cmd.Parameters.Add(new SqlParameter("@val_negociado", SqlDbType.Float)).Value = objO.val_negociado;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objO.observacoes;
               objO.cod_orcamento = objD.executaComandoAI(cmd, "orcamento");
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       //alterar
       public void alterar(Orcamentos objO)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "update orcamento set dt_orcamento = @dt_orcamento,validade_orcamento = @validade,cod_cliente = @cod_cliente," +
                   "cod_funcionario = @cod_funcionario,val_orcamento = @valor,qtd_parcelas = @qtd_parc,val_negociado = @val_negociado,observacoes = @obs " +
                   "where cod_orcamento = @cod_orcamento";
               cmd.Parameters.Add(new SqlParameter("@dt_orcamento", SqlDbType.Date)).Value = objO.dt_orcamento;
               cmd.Parameters.Add(new SqlParameter("@validade", SqlDbType.Int)).Value = objO.validade_orcamento;
               cmd.Parameters.Add(new SqlParameter("@cod_cliente", SqlDbType.Int)).Value = objO.cod_cliente;
               cmd.Parameters.Add(new SqlParameter("@cod_funcionario", SqlDbType.Int)).Value = objO.cod_funcionario;
               cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.Float)).Value = objO.val_orcamento;
               cmd.Parameters.Add(new SqlParameter("@qtd_parc", SqlDbType.Int)).Value = objO.qntd_parc_orcamento;
               cmd.Parameters.Add(new SqlParameter("@val_negociado", SqlDbType.Float)).Value = objO.val_negociado;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objO.observacoes;
               cmd.Parameters.Add(new SqlParameter("@cod_orcamento", SqlDbType.Int)).Value = objO.cod_orcamento;
               objD.executaComando(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       public void excluir(Orcamentos objO)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "delete from orcamento where cod_orcamento = @cod_orcamento";
               cmd.Parameters.Add(new SqlParameter("@cod_orcamento", SqlDbType.Int)).Value = objO.cod_orcamento;
               objD.executaComando(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       public Orcamentos localizar(int codigo)
       {
           Orcamentos objO = null;
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select * from orcamento where cod_orcamento = @cod_orcamento";
               cmd.Parameters.Add(new SqlParameter("@cod_orcamento", SqlDbType.Int)).Value = codigo;
               tab = objD.executaConsulta(cmd);
               if(tab !=null)
                   if (tab.Rows.Count == 1)
                   {
                       objO = new Orcamentos(codigo, DateTime.Parse(tab.Rows[0]["dt_orcamento"].ToString()),
                           int.Parse(tab.Rows[0]["validade_orcamento"].ToString()),
                           int.Parse(tab.Rows[0]["cod_cliente"].ToString()),
                           int.Parse(tab.Rows[0]["cod_funcionario"].ToString()),
                           Double.Parse(tab.Rows[0]["val_orcamento"].ToString()),
                           int.Parse(tab.Rows[0]["qtd_parcelas"].ToString()),
                           Double.Parse(tab.Rows[0]["val_negociado"].ToString()),
                           tab.Rows[0]["observacoes"].ToString());
                   }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
           return objO;
       }
       public DataTable localizar(String nome)
       {
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select o.cod_orcamento,c.nome_cliente,o.val_orcamento,o.dt_orcamento from orcamento o, clientes c" +
                                    " where o.cod_cliente = c.cod_cliente and c.nome_cliente like @nome";
               cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = "%" + nome + "%";
               tab = objD.executaConsulta(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
           return tab;
       }
        #endregion
    }
}
